// return thenable对象
// function p1() {
//   return new myPromise((resolve, reject) => {
//     resolve(100)
//   })
// }
// p1().then(
//   (res) => {
//     console.log('1', res)
//     return {
//       // x: 7
//       then: (r, j) => {
//         r('thenable_' + res)
//         // j('error_' + 100)
//       }
//     }
//   }
// )
// .then((res) => {
//   console.log('2', res)
// }, err => {
//   console.log('catch error =', err)
// })

// ========================================================

// var p1 = new myPromise(function (resolve, reject) {
//   resolve(101);
// });

// var p2 = new myPromise((resolve, reject) => {
//   resolve(102)
// })

// myPromise.all([p1, p2, 103, {
//   then: (r, j) => {
//     r(104)
//   }
// }, myPromise.resolve(105)]).then(res => {
//   console.log(res)
// }).catch(err => {
//   console.log('err =', err)
// })

// ========================================================

var p1 = new myPromise((resolve, reject) => {
  // setTimeout(() => {
  //   resolve(101)
  // }, 3000)
  resolve(101)
  // reject(101)
})

var p2 = new myPromise((resolve, reject) => {
  // setTimeout(() => {
  //   resolve(102)
  // }, 2000)
  // resolve(102)
  reject(102)
})

var p3 = new myPromise((resolve, reject) => {
  // setTimeout(() => {
  //   resolve(103)
  // }, 1000)
  resolve(103)
  // reject(103)
})

// myPromise.all([p1, p2, p3]).then(res => {
//   console.log(res)
// }).catch(err => {
//   console.log(err)
// })
// myPromise.allSettled([p1, p2, p3])
myPromise.allSettled([p1])
.then((res) => {
  console.log('reult = ', res)
})
// .catch(err => {
//   console.log('catch', err)
// })